Documented the pin and save limits, the missing message operations, and call transcriptions. - #517
Conversation
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
…rows, rename example UIDs to cometchat-uid-N
States all four limits as fixed values wherever a reader looks: 100 pinned messages per conversation with user and app pins sharing that limit, 100 saved messages per user, 5 pinned conversations per user, and 5 globally pinned conversations per app. - rest-api/messages.mdx: correct the pin bullet, which said a conversation holds 100 pinned messages and then that app and user pins each have their own limit of 100, implying 200. Adds the error codes to the limit bullets and to the page's error table. Operations table: rename the row to "Mark Message As Interacted" to match the page title, reword "Remove a pinned message" to "Unpin a message", and note the five operations that require the onBehalfOf header. - rest-api/conversations.mdx: add the two conversation pin limits. - articles/properties-and-constraints.mdx: add all four as rows, which the messages page already linked to for system limits. - articles/error-guide.mdx: give the four limit errors their actual values instead of "the maximum number allowed". - Re-sync chat-apis.json and data-import-apis.json from the chat-api OAS. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds a Get Call Transcriptions page driven by the new
/calls/{sessionId}/transcriptions operation, wires it into the Calls group in
docs.json, and refreshes calls.json from the regenerated OAS output.
The overview gains the endpoint row, the hasTranscription and transcriptions
call properties, and a Transcription Properties table. List Calls gains the
hasTranscription=true filter use case and the updated description.
Also documents behaviour that was already live but undocumented: calls flagged
with hasTranscription embed their 5 newest transcripts directly in the List
Calls and Get Call responses, so the paginated endpoint is only needed beyond
that cap.
Verified against a local mint dev preview -- all four pages render and the
transcriptions array resolves through transcriptionSchema.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…s (ENG-36224) Refreshes calls.json from the regenerated OAS output. The List Calls and Get Call examples now set hasTranscription to true and carry the transcriptions array it gates, which the schema described but no payload demonstrated. Verified against a local mint dev preview. Note that mint reads the OpenAPI spec at boot, so a restart is required for calls.json changes to appear. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Thanks for the thorough review. Responses to the transcriptions points: P1 — response shape vs ENG-36224The docs are correct; the ticket's spec is superseded. The shipped endpoint returns transcript artifacts ( I've recorded this on ENG-36224 so the ticket's acceptance criteria aren't later used as a regression baseline. Worth noting for future reviews: P1 — "5 most recent transcriptions"The claim does have a source: The reason it isn't findable from this PR: on So the open question is narrower than "unsourced claim" — it's "is 5 still the right number", and that's owned by the calls service. P2 — upstream spec annotationsAgreed on the risk, and the fix already exists — it just isn't merged. So the action is to merge that branch before anyone regenerates, rather than re-applying the edits here. Accepted and actioned
SeparatelyThe backend change to a single shared pin count is tracked apart from this PR. It's a behaviour change rather than a default bump: |
…pages. From the review on #517: - Removed the pin overshoot/lock paragraph from Pin Message. - Added the per-user and global pinned-conversation limits to their own endpoint pages. They were stated only in the OAS operation description, which each page's frontmatter description overrides, so they rendered nowhere on the site. - Added the "5 most recent transcriptions" cap to List Calls and Get Call for the same reason, and noted onBehalfOf on Get Call Transcriptions. - Synced calls.json and chat-apis.json from chat-api. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Follow-up to my previous comment — correcting one point and closing two others. All of this is now pushed in Scope — retitled, not splitI said I would "either split the transcriptions work or retitle." Correcting that: the transcriptions changes are intentional and belong in this PR. I've retitled it rather than splitting, so no separate PR is coming — please review them as part of this one. "5 most recent" — confirmedConfirmed against the calls service: it returns at most the 5 most recent transcriptions per call. That number is no longer an unsourced claim, and it's now stated on the pages themselves rather than only on the schema property. Why the limits moved into the page bodiesWorth flagging, because it changes how any limit has to be documented here: a page's frontmatter So the limits I had written into the OAS descriptions rendered nowhere on the site. Reading the source would not have shown this — I only caught it by running the docs locally and checking the rendered pages. Now stated in the page bodies:
Each was verified in a local Also in this push
Note on link validationThe "all links valid" checklist item is unchecked because Two things still open
|
Picks up hideParticipants, hideRecording and hideTranscription on List Calls and Get Call, and the corrected "was not set to true" wording on the transcriptions property. Generated from chat-api; additive only. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
P2
|
ketanyekale
left a comment
There was a problem hiding this comment.
Approving. Checked: pin/save limits consistent across all pages (shared 100 pins/conversation, 100 saves/user, 5/5 conversation pins); call-transcriptions docs, the 5-most-recent cap, and the new hide* params match the calls service (requestFormatter.js:246/262, CallsService.js:20). 0 broken nav refs, 0 404s, 0 broken internal links; all JSON parses.
Before merging or regenerating specs:
- Don't regenerate chat-apis.json/calls.json until cometchat-team/chat-api#2578 merges, or these fixes get overwritten.
- The docs describe the shared pin limit ahead of the backend fix (about a week out). That gap is accepted.
- The branch is 26 commits behind main; a rebase before merge would be tidy.
jitvarpatil
left a comment
There was a problem hiding this comment.
Review: pin/save limits, missing message operations, call transcriptions
Requesting changes for one content issue — the limits are documented as fixed values when they appear to be configurable defaults. Structurally the PR is clean.
🟠 Limits are stated as fixed, but they appear to be tenant-overridable defaults
The PR documents 100 pinned messages per conversation, 100 saved messages per user, 5 pinned conversations per user, and 5 global pins per app as hard limits ("its limit of 100…") — in articles/error-guide.mdx, articles/properties-and-constraints.mdx, rest-api/messages.mdx, rest-api/conversations.mdx, the four endpoint pages, and the chat-apis.json operation descriptions.
The pin/save front-end design describes the message caps as server settings with a default of 100, overridable per app (SAVED_MESSAGES_PER_USER, PINNED_MESSAGES_PER_CONVERSATION), which is why the UI Kits read the actual cap from errorParams.limit rather than hard-coding the number. If that still holds, the docs are wrong for any app whose limit was changed.
Please confirm with the backend team, then either:
- word them as defaults — e.g. "By default, a conversation can hold up to 100 pinned messages" — and note that the error response carries the app's actual limit in
errorParams; or - if they really are fixed, say so explicitly.
Please confirm the 5 pinned conversations and 5 global pins figures in the same pass — I couldn't verify those from any source available to me.
Keep the wording in sync across all the places listed above, including the spec descriptions.
Nits
- PR description is the unfilled template (empty description; "All links in my changes are valid" and "accurately described" unchecked). The title covers it, but please fill it in.
- Unrelated edits — "summarise" → "summarize" (
ai-agents/vercel-product-hunt-agent.mdx) and the.mintlify/Assistant.mdsample-user update. Harmless, just out of scope.
✅ Verified
chat-apis.json,calls.json,data-import-apis.jsonall parse.chat-apis.jsonhas 172 operations before and after with no removal, rename or summary change, so no existing reference page'sopenapi:ref moves.calls.jsonadds onlyGET /calls/{sessionId}/transcriptions.- Every
openapi:ref in the repo resolves, apart from 29ai-agents/apis/*pages that are already unresolved onmainand untouched here (separate cleanup). rest-api/calls-apis/get-call-transcriptionsis in the nav and resolves;page/perPage("Defaults to 100, capped at 1000"), the optionalonBehalfOfheader and the server URL match the page. The examplesessionIdis the oneget-call.mdxalready uses onmain.- All eight new rows in the messages operations table (Pin, Unpin, Save, Unsave, Mark As Interacted, List Threads, Subscribe, Unsubscribe) link to existing pages in the nav, and each page's
openapi:endpoint matches its row. - The
superhero*→cometchat-uid-*/cometchat-guid-1rename is complete — nosuperherooccurrences remain in any.mdxor.jsonfile. - Get Call gains
hideParticipants/hideRecording/hideTranscriptionin the spec.
Two more findings on the limits, from the published SDKCarried over from #536, where @suraj-chauhan-cometchat's parity pass surfaced these. I verified each against the published 1. User pins and app/system pins are separate budgets, not a shared one
The SDK says the opposite ( /** Max pinned messages a user may hold in one conversation, or null if the
app settings carry no quota. */
export function getPinMessageLimit(): Promise<number | null>;
/** Max admin/global pinned messages in one conversation. A separate budget
from getPinMessageLimit() — system pins do not consume a user's allowance. */
export function getSystemPinMessageLimit(): Promise<number | null>;The same split exists at conversation level — 2. The quotas are app-settings-driven and may be absent entirelyEvery getter returns 3.
|
…verview.
Description
Related Issue(s)
Type of Change
Checklist
Additional Information
Screenshots (if applicable)